<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>变量提升和函数提升以及函数的参数</title>
</head>
<body>
    <!--
        ☆ 变量提升 
            只有var声明出来的变量才有变量提升，let和const声明的不存在变量提升
            在代码执行之前，他的内部会把在当前作用域下的var声明的变量提升到当前作用的最前面，只提升声明不提升赋值

        ☆ 函数提升 
            指函数在声明之前就可以被调用
            会把所有的函数声明提升到当前作用域的最前面
            只提升函数声明，不提升函数调用
            函数表达式必须先声明赋值再调用，否则报错
            var fun  = function(){ console.log("函数表达式")}
     -->

     <!-- 
        ☆ 函数的参数

        ☆☆ 动态参数
            arguments 是函数内部内置的伪数组变量，它包含了调用函数时传入的所有实参
            他是一个伪数组，只存在于函数中，他的作用是动态获取函数的实参
            可以通过for循环依次得到传递过来的实参
            伪数组没有call,和push这些方法的

        ☆☆ 剩余参数，存在于函数里面
            通过...来当做形参
            function getSum(a,...other){
                console.log(other)
            }
            getSum(1,2,3)
            
            他返回的是一个真正的数组
            提倡使用剩余参数


      -->
</body>
</html>